Contemporary consumer electronic devices are being delivered with increasingly powerful processing capabilities to meet users' demands. General-purpose computers (i.e. personal computers and laptops) are also becoming more powerful, with larger memories, faster clocks, and shorter operational cycles. Furthermore, devices are more commonly provided with communication facilities that permit them to exchange data with other systems over a distributed data network such as the Internet.
Although the processing limits of these newer, powerful devices may occasionally be reached (e.g. when rendering realistic, three-dimensional scenes, performing detailed simulations or decoding complex multimedia streams), the devices often have computing capacity to spare. In addition, users have become accustomed to leaving devices operating at all times to avoid startup delays. These circumstances have created a surplus of CPU cycles: time periods during which a device could perform a calculation, if only a framework existed to provide the inputs and to retrieve the result.
Distributed data processing applications (also known as “grid computing” applications) have been developed to provide such a framework. While distributed processing is not a feasible approach for all applications, a significant subset of useful projects can be subdivided into independent tasks that require relatively small amounts of input data, produce relatively small amounts of output, and have relaxed (or non-existent) inter-task synchronization requirements. Such projects can take advantage of CPU cycles that would otherwise be lost.
Examples of tasks that can be split up and assigned to nodes participating in a distributed processing network include electromagnetic signal analysis, primality testing, brute-force ciphertext decryption and protein folding simulation. Well-known projects have developed software, suitable for execution on many different types of systems, to perform these tasks. People who have one or more machines with some spare processing capacity can run the software for a project they find interesting. The software coordinates with a project server, obtains “work units” and delivers results. Some projects are able to achieve aggregate processing speeds (typically measured in billions of floating-point operations per second, or “GFLOPS”) that are orders of magnitude faster than the speed achievable with a single supercomputer. The remarkable power of these ad hoc distributed processing networks is even more surprising when one considers that the CPU cycles are often donated—the owners of the participating machines receive no monetary benefit for their contribution, despite their costs incurred in acquiring and operating the machines.
Since some of these distributed data processing projects produce scientific data that is of general benefit to society, it would be desirable to encourage greater participation. A method of accounting and evaluating donated processing resources can provide a foundation for establishing incentives directed toward that end.